Primary aim
For our primary analysis, multiple regression models were run to investigate the relationship between MS and brain volumes. The models were run separately (i.e. in parallel) for each brain region of interest (ROI) and the results are reported for ROIs that showed significant associations with MS. The models controlled for Sex, Age, Age Squared, Age by Sex interaction, and Intracranial Volume (ICV).
Model equation: \[\begin{align} Volume &= \beta_0 + \beta_1*Sex + \beta_2*Age + \beta_3*Age^2 + \beta_4*Sex*Age + \beta_5*ICV + \beta_6*MS + \epsilon \end{align}\]
Significant main effects: MS
With non-MS controls as the reference group, the main effect in
milliliters (\(mL\)) of having MS,
after accounting for control variables, is shown in the
estimate column for each significant ROI in the table
below; 95% confidence intervals for the effect are shown in the
confidence.interval column. Individual effects are
described below the table.
#####
# Main effect Model: ROI ~ Sex + Age + Age^2 + Sex\*Age + MS + ICV
#####
run_model <- function(outcome){
#' run model for each ROI
f <- as.formula(sprintf("%s ~ Sex + Age + Age^2 + Sex*Age + MS + ICV", outcome))
res <- lm(f, data = df)
}
# run models searately
models <- ROI_INDICES %>%
purrr::map(run_model)
# tidy models
models_df <- models %>%
purrr::map(tidy) %>%
setNames(ROI_INDICES) %>%
bind_rows(.id = 'ROI_INDEX') %>%
left_join(dict_df, by = c('ROI_INDEX')) %>% # join with ROI dictionary
select(ROI_INDEX, ROI_NAME, TISSUE_SEG, everything())
# use FDR correction
sig_main_effects_df <- models_df %>%
filter(term == 'MS1') %>%
mutate(p.value.adj = p.adjust(p.value, method='fdr')) %>%
# add confidence intervals:
add_column(confidence.interval = purrr::map(models, confint, parm = "MS1") %>% purrr::map(~sprintf("(%.3f, %.3f)", .x[1], .x[2])) |> unlist(),
.after = 'estimate') %>%
filter(p.value.adj < 0.05) %>%
mutate(p.value = ifelse(p.value < 0.0001,
"< 0.0001",
as.character(round(p.value, 4))),
p.value.adj = ifelse(p.value.adj < 0.0001,
"< 0.0001",
as.character(round(p.value.adj, 4))),
estimate = round(estimate, 3)) %>%
arrange(by = TISSUE_SEG)
# show pretty
sig_main_effects_df %>%
select(-ROI_INDEX, -std.error, -statistic, -term)
# function to describe results
describe_main_effect <- function(row){
sprintf("The %s volume of MS patient is %.3f mL %s, on average, compared to that of non-MS controls (95%% CI: %s, p %s).",
row$ROI_NAME,
round(abs(row$estimate), 3),
ifelse(sign(row$estimate) == 1, 'bigger', 'smaller'),
row$confidence.interval,
ifelse(str_detect(row$p.value.adj, "<"), row$p.value.adj, sprintf('= %s', row$p.value.adj))
) |> invisible()
}
# split by rows
rows <- sig_main_effects_df %>%
split(seq_len(nrow(sig_main_effects_df)))
for (effect_row in rows){ # make list output
cat("\n")
cat("-", describe_main_effect(effect_row), "\n")
}
The Right Thalamus Proper volume of MS patient is 0.446 mL smaller, on average, compared to that of non-MS controls (95% CI: (-0.561, -0.331), p < 0.0001).
The Left Thalamus Proper volume of MS patient is 0.446 mL smaller, on average, compared to that of non-MS controls (95% CI: (-0.564, -0.328), p < 0.0001).
The Left Angular Gyrus volume of MS patient is 0.575 mL smaller, on average, compared to that of non-MS controls (95% CI: (-0.923, -0.226), p = 0.0179).
The Left Calcarine Cortex volume of MS patient is 0.243 mL bigger, on average, compared to that of non-MS controls (95% CI: (0.091, 0.395), p = 0.0216).
The Right Frontal Pole volume of MS patient is 0.179 mL smaller, on average, compared to that of non-MS controls (95% CI: (-0.285, -0.073), p = 0.0167).
The Left Frontal Pole volume of MS patient is 0.214 mL smaller, on average, compared to that of non-MS controls (95% CI: (-0.337, -0.091), p = 0.0138).
The Right Fusiform Gyrus volume of MS patient is 0.358 mL smaller, on average, compared to that of non-MS controls (95% CI: (-0.597, -0.119), p = 0.0324).
The Right Inferior Occipital Gyrus volume of MS patient is 0.299 mL bigger, on average, compared to that of non-MS controls (95% CI: (0.093, 0.506), p = 0.0415).
The Left Middle Cingulate Gyrus volume of MS patient is 0.306 mL smaller, on average, compared to that of non-MS controls (95% CI: (-0.464, -0.149), p = 0.0042).
The Left Parietal Operculum volume of MS patient is 0.181 mL smaller, on average, compared to that of non-MS controls (95% CI: (-0.298, -0.064), p = 0.0278).
The Right Precentral Gyrus volume of MS patient is 0.532 mL smaller, on average, compared to that of non-MS controls (95% CI: (-0.863, -0.200), p = 0.0216).
The 3rd Ventricle volume of MS patient is 0.175 mL bigger, on average, compared to that of non-MS controls (95% CI: (0.123, 0.228), p < 0.0001).
The Right Inferior Lateral Ventricle volume of MS patient is 0.069 mL bigger, on average, compared to that of non-MS controls (95% CI: (0.040, 0.097), p < 0.0001).
The Left Inferior Lateral Ventricle volume of MS patient is 0.041 mL bigger, on average, compared to that of non-MS controls (95% CI: (0.018, 0.064), p = 0.0132).
The Left Lateral Ventricle volume of MS patient is 1.174 mL bigger, on average, compared to that of non-MS controls (95% CI: (0.399, 1.950), p = 0.0314).
The Frontal Lobe WM Left volume of MS patient is 1.979 mL bigger, on average, compared to that of non-MS controls (95% CI: (0.798, 3.160), p = 0.0167).
The Corpus Callosum volume of MS patient is 0.458 mL smaller, on average, compared to that of non-MS controls (95% CI: (-0.781, -0.135), p = 0.0472).